package bbalgae;

public class J02_Operators {

	/*
	 * 연산자 operator
	 * 컴퓨터 프로그램은 특정 기능을 수행할 작업들로 구성되어 있다.
	 * 연사자는 이러한 작업을 표현하는 기호로서 작업에는 더하기,빼기,곱하기,나누기, 비트 이동 등이 있다.
	 * 연산자는 한/두/세 개의 피 연산자에서 작업을 수행하며 피 연산자(operand)는 작업의 대상을 의미한다.
	 */
	
	public static void main(String[] args) {
		
		//1. 단항 연산자 : ++,--, !
		int val1 = 10;
		int bal = 10;
		int val2 = ++val1; //val1 = val1 + 1; 증가연산자
		int val3 = --val1; //val1 = val1 -1; 감소연산자
		int val4 = bal++;
		int val5 = bal--;
		boolean isMarried = true;
		
		//산술연산자 : +,-,*,/,% 
		
		int op1 = 300;
		int op2 = 125;
		int op3 = 123;
		int op4 = 23;
		int plus = op1 + op2;
		int sub = op1 - op2;
		int mul = op1 * op2;
		int div = op1 / op2; // 정수를 정수로 나누면 결과도 정수
		int mod = op1 % op2;
		float div2 = op1 / (float)op2; //실수를 정수로 나누면 결과는 실수
									   //수식의 결과 유형과 그것을 저장하는 변수의 유형은 서로 일치해야함 
		
		double div3 = op3 / (double)op4;
		 //실수 형변환을 하게되면 형변환에 다라 이세한 오차가 발생할 수도 있음(Math클래스를 사용하면 오차를 줄일수 있음)

		//관계/동등 연산자 : >, <, >=, <=, ==, !=
		
		
		boolean rel1 = 100 > 150;
		boolean rel2 = 100 < 150;
		boolean rel3 = 100 >= 150;
		boolean rel4 = 100 <= 150;
		boolean rel5 = op1 == op2;
		boolean rel6 = op3 != op4;
		
		//조건 연산자 : AND(&&), OR(||), NOT(!), ? :	
		
		boolean cond1 = (100 > 150) && (op1 == op2);
			//short-circuit 연산
			//조건 연산 처리시 첫째 항의 연산 결과로 의해 전체 수식의 결과를 바로 알 수 있는 경우 나머지 항의 수식은 연산하지 않음!
			
		boolean cond2 = (op1 > op2) && (100 > 150);
		boolean cond3 = (100 > 150) || (op1 == op2);
		char cond4 = (op1 == op2) ? '정':'오';
			// 삼항 연산자 ?: 
			// 형식은 (조건식) ? 참일때 처리 :거짓일때 처리;
		
		//대입 연산자 : =,+=,-=,*=,/=,%=
		int assg1 = 100;
		int assg2=125,assg3=150,assg4=175,assg5=200;
		
		assg1 += 200; // assg1= assg1 + 200;
		assg2 -= 200;
		assg3 *= 200;
		assg4 /= 75;
		assg5 %= 75;
		
		System.out.println(val2);
		System.out.println(val1);
		System.out.println(val4);
		System.out.println(val5);
		System.out.println(!isMarried);
		System.out.println(plus);
		System.out.println(sub);
		System.out.println(mul);
		System.out.println((double)div);
		System.out.println(mod);
		System.out.println(div2);
		System.out.println(div3);
		System.out.println(rel1);
		System.out.println(rel2);
		System.out.println(rel3);
		System.out.println(rel4);
		System.out.println(rel5);
		System.out.println(rel6);
		System.out.println(cond1);
		System.out.println(cond2);
		System.out.println(cond3);
		System.out.println(cond4);
		System.out.println(assg1);
		System.out.println(assg2);
		System.out.println(assg3);
		System.out.println(assg4);
		System.out.println(assg5);
	
	}
}
